<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        面向对象  继承 封装 多态 
        对象是由
            属性&       -----对象的特征
            方法组成的  -----事物的行为

        类
            在es6中新增了类的概念，可以使用calss关键字声明一个类 之后用这个类来实例化对象
            类 抽象了对象的公共部分 泛指某一大类
            对象 指某一个    
     -->
    
</body>
</html>
<script>
//类和对象 创建---------------------------------------------------------------------------
    // calss Person {
    //       //属性方法
    // }
    //       //创建实例(对象)
    // var person = new Person()            //类必须使用 new 调用，否则会报错
    // 注意es6中不建议用;号结尾  不推荐加  
//构造函数---------------------------------------------------------------------------------
   class Person{
    constructor(name, age){
        //构造函数接收一个 name age 
        this.name = name      
        this.age = age
    }
   }
   var person = new Person('张三儿' ,100)
        console.log(person); //打印 {name: "张三儿", age: 100}age: 100name: "张三儿"__proto__: Object
// 类方法-----------------------------------------------------------------------------------
    //constructor()方法是类的构造函数(默认的方法)，用于传递参数，返回实例对象
    //通过new关键字生成对象实例的时候，自动调用方法，如果没有显示定义，类内部会自动创建一个constructor() 
 class Person  {
         constructor(name, age) {    //
    // 构造函数，接收一个name和age
             this.name = name
             this.age = age 
         }
         say(){
    // 一个方法  //注意类里面的方法不加function关键字  方法与方法之间不用,号隔开 
             console.log("你好",this.name)
         }
    }
     var person  = new Person('老王',44)
    //调用方法
     person.say()  //老王
    //在类的实例上调用方法 其实就是调用 原型上的方法 



</script>